home *** CD-ROM | disk | FTP | other *** search
/ Aminet 33 / Aminet 33 - October 1999.iso / Aminet / comm / irc / AmScript.lha / AmScript.amirx next >
Text File  |  1999-08-08  |  25KB  |  2 lines

  1. /* $VER: AmScript 0.9 (07/08/99) by Paul Demark & Michael Trebilcock */
  2. Options Results;signal on syntax;Bold='02'x;Inverse='16'x;Underline='1F'x;IF Exists('Libs:rexxreqtools.library')|Exists('Libs/rexxreqtools.library')|Exists('rexxreqtools.library') THEN;DO;IF ~SHOW('L','rexxreqtools.library') THEN Call AddLib('rexxreqtools.library',0,-30,0);End;ELSE;DO;Call cEcho('Unable to open RexxReqTools.library  Please Install Libs:rexxreqtools.library');Exit;End;IF Exists('Libs:rexxsupport.library')|Exists('Libs/rexxsupport.library')|Exists('rexxsupport.library') THEN;DO;IF ~SHOW('L','rexxsupport.library') THEN Call AddLib('rexxsupport.library',0,-30,0);End;ELSE;DO;Call cEcho('Unable To Open RexxSupport.library  Please Install Libs:rexxsupport.library from your Workbench disk');Exit;End;IF Exists('Libs:rexxdossupport.library')|Exists('Libs/rexxdossupport.library')|Exists('rexxdossupport.library') THEN;DO;IF ~SHOW('L','rexxdossupport.library') THEN Call AddLib('rexxdossupport.library',0,-30,0);End;ELSE;DO;Call cEcho('Unable To Open RexxDosSupport.library  Please Install Libs:rexxdossupport.library');Exit;End;Template='Arguements/M,Install/S,Resolve=R/S,SList=SoundList/S,Play/S,SSend=SoundSend/S,NBan=NickBan/S,Ban=IPBan/S,ZBan=ZIPBan/S,Simple/S,Complex/S,Run/S,NewNick=NNick/S,ZOp/S,ZDeOp/S,ZSuspend=ZSus/S,ZUnSuspend=ZUnSus/S,Type/S,Time/K,NoTime/S,Verbose=Verb/S,NoReason=NoR/S,ASHelp=Help/S';Parse Arg Args;Call ReadArgs(Args,Template);INFO screen;Screen="'"result"'";Screen='rt_pubscrname='Screen;PARSE UPPER VERSION f;f=SUBSTR(WORD(f,6),1,2);"GetMyNick";MyNick=Result;GetChannel;Channel=Result;Version="v0.9";Tags="AmScript "Version" by Paul Demark & Michael Trebilcock";NL='0A'x;IF Time='TIME'&~DATATYPE(ASHelp,'W') THEN;DO;Call cEcho('Do not just use the TIME keyword without an arguement.');Exit;End;SELECT;WHEN ASHelp THEN Call Help();WHEN Install THEN Call Install();WHEN Resolve THEN Call Resolve();WHEN SList THEN Call List();WHEN Play|SSend THEN Call Play();WHEN NBan THEN Call NBan();WHEN Ban|ZBan THEN Call IPBan();WHEN ZDeOp|ZOp THEN Call ZDeOp();WHEN ZSuspend THEN Call ZSuspend();WHEN ZUnSuspend THEN Call ZUnSuspend();WHEN Run THEN Call Run();WHEN NewNick THEN Call NewNick();WHEN Type THEN Call Type();OTHERWISE Call Help();End;Depart:;IF Verbose THEN IF ASHelp~=1 THEN Call cEcho('Now quitting AmScript');Exit;Help:;SELECT;WHEN Install|Resolve|SList|Play|SSend|NBan|Ban|ZBan|Run|NewNick|Verbose|NoReason THEN;DO;IF ~Exists('AmScriptHelp.amirx')&~Exists('Rexx/AmScriptHelp.amirx') THEN Call cEcho(Bold"Online help file is NOT installed (AmScriptHelp.amirx)");ELSE;DO;'SAY /Rx AmScriptHelp.amirx Helpizm=69 'Args;Exit;End;End;OTHERWISE;IF Arguements.0~='ARGUEMENTS.0' THEN;DO;Call cEcho(Bold"Unknown Command: "Arguements.0);Call cEcho(" ");End;Call cEcho(Bold"Welcome to AmScript "Version"!");IF ASHelp THEN;DO;Call cEcho(" ");Call cEcho("ASHelp / Help command brings up this general help.  For help on a specific command, type: /ASHelp <Command>");End;Call cEcho(" ");Call cEcho("The Available Commands Are:");Call cEcho(Bold"Install"Bold" - Installs aliases for quick access to this script");Call cEcho(Bold"Resolve / R"Bold" - Resolve ones IP address (Either by Nick or IP Address given)");Call cEcho(Bold"SList / SoundList"Bold" - List available sound files");Call cEcho(Bold"Play"Bold" - Play sounds from the 'SoundList' command or by their path/filename");Call cEcho(Bold"SSend / SoundSend"Bold" - Send a sound (by name or number from the soundlist) to a nominated user");Call cEcho(Bold"NBan / NickBan"Bold" - Bans the specified person by their nickname");Call cEcho(Bold"Ban/IPBan"Bold" - Bans the specified person by their hotmask for "Bold"<Time>");Call cEcho(Bold"ZBan/ZIPBan"Bold" - ZBans the specified person by their hotmask for "Bold"<Time in Hours>");Call cEcho(Bold"ZOp"Bold" - Op the specified person via Z");Call cEcho(Bold"ZDeOp"Bold" - DeOp the specified person via Z");Call cEcho(Bold"ZSuspend / Suspend"Bold" - Suspend the specified person from Z for "Bold"<Time>");Call cEcho(Bold"ZUnSuspend / UnSuspend"Bold" - UnSuspend the specified person from Z");Call cEcho(Bold"Run"Bold" - Run programs from within AmIRC");Call cEcho(Bold"NewNick / Nick"Bold" - Change your nick to a new one");Call cEcho(Bold"Type"Bold" - Type defined text file to a person or channel");Call cEcho(" ");Call cEcho(Bold"ASHelp / Help"Bold" - to bring this help or help for any of the above commands");Call cEcho("For help on any command, type: /AS ASHelp <Command>");Call cEcho(" ");Call cEcho(Bold"Verbose"Bold" - will show additional information with the other commands available");Call cEcho(Bold"Time = <Value>"Bold" - specify the time to act on a person on other commands with <Time> mentioned above");Call cEcho(Bold"NoTime"Bold" - Do not ask for the time of a command to act on a person");Call cEcho(" ");Call cEcho("Commands in "Bold"<>"Bold" means they are required.  Commands in "Bold"[]"Bold" are optional.");End;Return();Install:;Call cEcho("Installing AmScript..");"say /alias /AS /Rx AmScript.amirx %p";"say /alias /AmScript /Rx AmScript.amirx %p";"say /alias /SoundList /Rx AmScript.amirx SList";"say /alias /SList /Rx AmScript.amirx SList";"say /alias /Play /Rx AmScript.amirx Play %p";"say /alias /SoundSend /Rx AmScript.amirx SSend %p";"say /alias /SSend /Rx AmScript.amirx SSend %p";"say /alias /Resolve /rx AmScript.amirx Resolve %p";"say /alias /R /rx AmScript.amirx Resolve %p";"say /alias /NBan /Rx AmScript.amirx NBan %p";"say /alias /IPBan /Rx AmScript.amirx IPBan %p";"say /alias /ZBan /Rx AmScript.amirx ZIPBan %p";"say /alias /ZOp /Rx AmScript.amirx ZOp %p";"say /alias /ZDeOp /Rx AmScript.amirx ZDeOp %p";"say /alias /ZSuspend /Rx AmScript.amirx ZSuspend %p";"say /alias /ZUnSuspend /Rx AmScript.amirx ZUnSuspend %p";"say /alias /Run /Rx AmScript.amirx Run %p";"say /alias /NewNick /Rx AmScript.amirx NewNick %p";"say /alias /NNick /Rx AmScript.amirx NewNick %p";"say /Alias /Type /rx AmScript.amirx Type %p";"say /alias /ASHelp /Rx AmScript.amirx ASHelp %p";Call cEcho(Bold"Installation Finished..  Please now save your AmIRC preferences.");Return();Resolve:;IF Arguements.0=""|Arguements.0='ARGUEMENTS.0' THEN;DO;Call cEcho('No Nick/Address was entered!  Please enter a Nick or an Address.');Call cEcho('EG: /AS Resolve Mick');Call cEcho('or');Call cEcho('/AS Resolve icq.mirabilis.com');Call Depart();End;Result='';"UserHost" Arguements.0;UHost=Result;IF UHost~='' THEN;DO;Hst=SubStr(UHost,Pos('@',UHost)+1);Call cEcho("Resolving "Arguements.0"'s IP Address..");NickName="'s";End;ELSE;DO;Hst=Arguements.0;Call cEcho("Resolving "Hst"..");NickName="";End;SELECT;WHEN Exists('Miami:MiamiResolve') THEN Resolver='Miami:MiamiResolve';WHEN Exists('AmiTCP:bin/askhost') THEN Resolver='AmiTCP:bin/askhost';WHEN Exists('Libs:rexxreqtools.library')|Exists('Libs/rexxreqtools.library')|Exists('rexxreqtools.library') THEN;DO;IF ~SHOW('L','rexxreqtools.library') THEN;DO;Call AddLib('rexxreqtools.library',0,-30,0);End;Resolver='Kuang11 Library';End;OTHERWISE;Call cEcho('No tool to resolve addresses available.  Please install either:');Call cEcho('Miami:MiamiResolve');Call cEcho('AmiTCP:bin/askhost');Call cEcho('Libs:rexxkuang11.library');Call Depart();End;IF Verbose=1 THEN Call cEcho('Found 'Resolver' to resolve.');IF Resolver~='Kuang11 Library' THEN;DO;ADDRESS COMMAND Resolver Hst ">T:Resolve";CheckOpen=Open(Resolve,'T:Resolve','R');IF CheckOpen=0 THEN;DO;Call cEcho('Unable to open temporary file for resolving.');Call Depart();End;i=0;DO UNTIL EOF(Resolve);DataRead=ReadLn(Resolve);SELECT;WHEN Left(DataRead,5)='host:' THEN Parse Var DataRead 'host: 'Hst Rest;WHEN Left(DataRead,5)='Host ' THEN IP=Hst;WHEN Strip(DataRead)='gethostbyname: Unknown host' THEN IP=Hst;WHEN Left(DataRead,8)='aliases:' THEN;DO;Addy=1;i=0;End;WHEN Left(DataRead,13)='address list:' THEN;DO;Addy=2;i=0;End;WHEN Left(DataRead,4)='    ' THEN;DO;SELECT;WHEN Addy=1 THEN;DO;Parse Var DataRead Alias.i Rest;i=i+1;End;WHEN Addy=2 THEN;DO;Parse Var DataRead IP.i Rest;i=i+1;End;OTHERWISE NOP;End;End;OTHERWISE NOP;End;End;Call Close(Resolve);Call ResolveCheck();Call MultipleResolve();Call Delete('T:Resolve');End;ELSE;DO;IP=GetNumIP(Hst);Call ResolveCheck();Call SingleResolve();End;Return();ResolveCheck:;IF IP=Hst THEN;DO;Call cEcho(""Arguements.0||NickName" hostname is not resolvable.");Call Depart();End;IF IP="" THEN;DO;Call cEcho(""Arguements.0||NickName" address was not found.");Call Depart();End;Return();MultipleResolve:;Call cEcho(Bold'Host Address: 'Bold||Hst);i=0;IF Alias.i~=''&Alias.i~='ALIAS.'||i THEN;DO;DO UNTIL Alias.i='ALIAS.'||i|Alias.i='';IF i=0 THEN Call cEcho(Bold'Alias List: 'Bold||Alias.i);ELSE Call cEcho('            'Alias.i);i=i+1;End;End;i=0;IF IP.i~=''&IP.i~='IP.'||i THEN;DO;DO UNTIL IP.i='IP.'||i|IP.i='';IF i=0 THEN Call cEcho(Bold'Address List: 'Bold||IP.i);ELSE Call cEcho('              'IP.i);i=i+1;End;End;Return();SingleResolve:;Call cEcho(Bold"HostName:"Bold Hst);Call cEcho(Bold"IP:"Bold IP);Return();List:;"GetCTCPSoundDir";SoundDir=Result;IF SoundDir="" THEN;DO;Call cEcho("Configure your AmIRC sound prefs first");Call Depart();End;IF Left(SoundDir,8)='PROGDIR:' THEN SoundDir=SubStr(SoundDir,9);Call cEcho("Listing the files in the directory '"SoundDir"'..");SoundList=ShowDir(SoundDir,'F','|');IF Arguements.0='ARGUEMENTS.0' THEN Arguements.0=2;i=1;DO Until SoundList='';Parse Var SoundList SoundList.i'|'SoundList;i=i+1;End;i=1;Call Open(SoundFile,'T:SoundList','W');IF result~=1 THEN Call WriteError('starting to write');DO UNTIL SoundList.i='SOUNDLIST.'||i;Call WriteLn(SoundFile,SoundList.i);IF result~=Length(SoundList.i)+1 THEN Call WriteError('writing');Call cEcho(Bold||i||Bold'. 'SoundList.i);i=i+1;End;Call cEcho('End of the sounds list.');Call CloseFile();Return();Play:;i=1;IF DATATYPE(Arguements.0,'W')&Exists('T:SoundList') THEN;DO;CheckOpen=Open(SoundFile,'T:SoundList',R);IF CheckOpen~=1 THEN Call WriteError('opening');DO UNTIL EOF(SoundFile);SoundList=ReadLn(SoundFile);IF Arguements.0=i THEN;DO;"GetCTCPSoundDir";SoundDir=Result;IF Left(SoundDir,8)='PROGDIR:' THEN SoundDir=SubStr(SoundDir,9);SoundDir=AbsolutePath(SoundDir);IF Right(SoundDir,1)~='/'&Right(SoundDir,1)~=':' THEN SoundDir=SoundDir||'/';IF Exists(SoundDir||SoundList)&SoundList~='' THEN;DO;IF Play THEN;DO;Call cEcho('Now playing 'Bold||SoundList);"PLAYSOUND "SoundDir||SoundList;End;IF SSend THEN;DO;IF Arguements.1~=''&Arguements.1~='ARGUEMENTS.1' THEN;DO;IF Verbose THEN Call cEcho('Sending sound file 'Bold||SoundList||Bold' to 'Bold||Arguements.1);"Say /DCC Send "Arguements.1 SoundDir||SoundList;End;ELSE Call cEcho('Please enter a nick to send the file 'Bold||SoundList||Bold' to.');End;Call CloseFile();End;ELSE;DO;IF SoundList~='' THEN;DO;Call cEcho("The sound file '"SoundList"' does not exist");Call CloseFile();End;End;End;ELSE i=i+1;End;IF (i-2)<Arguements.0 THEN Call cEcho('Sound number 'Bold||Arguements.0||Bold' does not exist.');End;ELSE;DO;"GetCTCPSoundDir";SoundDir=Result;IF Left(SoundDir,8)='PROGDIR:' THEN SoundDir=SubStr(SoundDir,9);SoundDir=AbsolutePath(SoundDir);IF Right(SoundDir,1)~='/'&Right(SoundDir,1)~=':' THEN SoundDir=SoundDir||'/';IF Pos(':',Arguements.0)=0 THEN;DO;IF Exists(SoundDir||Arguements.0) THEN;DO;IF Play THEN;DO;Call cEcho('Now playing 'Bold||Arguements.0);"PLAYSOUND "Arguements.0;End;IF SSend THEN;DO;IF Arguements.1~=''&Arguements.1~='ARGUEMENTS.1' THEN;DO;IF Verbose THEN Call cEcho('Sending sound file 'Bold||Arguements.0||Bold' to 'Bold||Arguements.1);"Say /DCC Send "Arguements.1 SoundDir||Arguements.0;End;ELSE Call cEcho('Please enter a nick to send the file 'Bold||Arguements.0||Bold' to.');End;Call Depart();End;End;IF Exists(Arguements.0) THEN;DO;IF Play THEN;DO;Call cEcho('Now playing 'Bold||Arguements.0);"PLAYSOUND "Arguements.0;End;IF SSend THEN;DO;IF Arguements.1~=''&Arguements.1~='ARGUEMENTS.1' THEN;DO;IF Verbose THEN Call cEcho('Sending sound file 'Bold||Arguements.0||Bold' to 'Bold||Arguements.1);"Say /DCC Send "Arguements.1 SoundDir||Arguements.0;End;ELSE Call cEcho('Please enter a nick to send the file 'Bold||Arguements.0||Bold' to.');End;End;ELSE;DO;IF DATATYPE(Arguements.0,'W')&~Exists('T:SoundList') THEN;DO;IF Play THEN;DO;Call cEcho("Now bringing up your soundlist..");Call List();End;End;ELSE;DO;IF Arguements.0='ARGUEMENTS.0' THEN;DO;IF Play=1 THEN Action='play';ELSE Action='send';Call cEcho('Please enter a number or sound filename to 'Action'.');End;ELSE Call cEcho(Arguements.0' sound file does not exist.');End;End;End;Return();WriteError:;Call cEcho("An error was encountered while "Arg(1)||NL||" the sound file");IF Arg(1)~='closing' THEN;DO;Call Close(SoundFile);IF result=0 THEN Call WriteError('closing');End;Exit;Return();CloseFile:;Call Close(SoundFile);IF result~=1 THEN Call WriteError('closing');Call Depart();Return();NBan:;IF Channel='' THEN;DO;Call cEcho('No channel joined!');Call Depart();End;IF Arguements.0='ARGUEMENTS.0'|Arguements.0='' THEN;DO;Arguements.0=rtgetstring(,"Enter nick of the person you wish to nickban",Tags,"_Ok|_Cancel",Screen);IF rtresult=0 THEN Call Depart();End;Nick=Arguements.0;Call FindUser();IF Found~=-1&Found~=0 THEN Call Reason();ELSE;DO;Call cEcho(Nick' is not in 'Channel);Call Depart();End;IF NoTime=0 THEN;DO;Time=rtgetlong(,"Enter the time wish to ban "Nick||NL||"0 equals forever",Tags,"_Seconds|_Mins|_Hours|_Days|_Forever|_Cancel","rtgl_min=0 rtgl_max=31536000" Screen);Call TimeBan();End;ELSE;DO;Time='0';Action='';End;IF Verbose THEN;DO;IF Compress(Arguements.1)=''|Arguements.1='ARGUEMENTS.1' THEN Reason='';ELSE Reason=' with the reason 'Bold||Arguements.1;Call cEcho("Doing a nickban on "Bold||Nick||Bold" on "Bold||Channel||Bold||Action||Reason);End;'RAW MODE 'Channel' -o+b 'Nick Nick'!*@*';'RAW KICK 'Channel Nick ':'Arguements.1;IF DATATYPE(Time,'W')&Time>1&Time<31536000&NoTime=0 THEN;DO;Delay(f*Time);'RAW MODE 'Channel' -b 'Nick'!*@*';End;Return();IPBan:;IF ZBan THEN BanType='Z';ELSE BanType='';IF Arguements.0='ARGUEMENTS.0'|Arguements.0='' THEN;DO;Arguements.0=rtgetstring(,"Enter nick of the person you wish to "BanType"Ban",Tags,"_Ok|_Cancel",Screen);IF rtresult=0 THEN Call Depart();End;"USERHOST" Arguements.0;UHost=Result;IF ZBan THEN;DO;IF Channel='' THEN;DO;Channel=rtgetstring(,"In what channel you wish to do your ZBan in?",Tags,"_Ok|_Cancel",Screen);IF rtresult=0 THEN Call Depart();IF Compress(Left(Channel,1))~='#' THEN Channel='#'||Compress(Channel);End;Call Reason();End;ELSE;DO;IF Channel='' THEN;DO;Call cEcho('No channel joined!');Call Depart();End;Call FindUser();IF Found~=-1&Found~=0 THEN Call Reason();ELSE;DO;Call cEcho("User "Bold||Arguements.0||Bold" is not on the channel "Bold||Channel||Bold".");Call Depart();End;End;Full=Arguements.0"!"UHost;IF Full=Arguements.0||'!' THEN;DO;Call cEcho('Could not get the IP address of 'Arguements.0'.');Call Depart();End;Parse Var Full Nick"!"Username"@"IP;IF Left(Username,1)='~' THEN Username='*'||SubStr(Username,2);IF ZBan=1 THEN;DO;Time=rtgetlong(,"Enter the time in Hours/Days you wish to ZBan "Nick,Tags,"_Hours|_Days|_Cancel","rtgl_min=1 rtgl_max=1440" Screen);Call ZTimeBan();Level=rtgetlong(,"Enter the ZBan level on "Nick,Tags,"_Ok|_Cancel","rtgl_min=1 rtgl_max=500" Screen);IF rtresult=0 THEN Call Depart();End;ELSE;DO;IF NoTime=0 THEN;DO;Time=rtgetlong(,"Enter the time wish to ban "Nick||NL||"0 equals forever",Tags,"_Seconds|_Mins|_Hours|_Days|_Forever|_Cancel","rtgl_min=0 rtgl_max=31536000" Screen);Call TimeBan();End;ELSE;DO;Time='';Action='';End;End;IF Simple THEN Call Simple();ELSE Call Complex();Return();ZDeOp:;IF ZOp THEN Action='Op';ELSE Action='DeOp';IF Arguements.0~='ARGUEMENTS.0'&Arguements.0~='' THEN;DO;i=0;DO FOREVER;IF Arguements.i='ARGUEMENTS.'||i THEN Leave;ELSE IF i~=0 THEN Arguements.0=Arguements.0||' '||Arguements.i;i=i+1;End;End;ELSE;DO;Arguements.0=rtgetstring(,"Enter the nick(s) you wish to "Action" via Z",Tags,"_Ok|_Cancel",Screen);IF rtresult=1 THEN Arguements.0=Translate(Arguements.0,"       ",".,-+@*/\");ELSE Call Depart();End;Nicks=Arguements.0;Nickx='';Nickz='';DO UNTIL Nicks='';PARSE Var Nicks Nick Nicks;"GetUsers";Found=Find(Translate(Upper(Result),"","+@%"),Compress(Upper(Nick)));IF Found=-1|Found=0 THEN Nickx=Nickx||' '||Nick;ELSE Nickz=Nickz||' '||Nick;End;Nickz=Strip(Nickz);Nickx=Strip(Nickx);IF Nickx~='' THEN Call cEcho('Z' Action 'of' Bold||Strip(Nickx)||Bold 'is not possible as they are not in the channel 'Channel'.');IF Nickz~='' THEN;DO;IF Verbose THEN Call cEcho('Requested a Z' Action 'of' Bold||Nickz'.');DO UNTIL Nickz='';Nicks=Strip(SubWord(Nickz,1,3));Nickz=SubWord(Mickz,4);"RAW PRIVMSG Z@Channels.Oz.Org :"Upper(Action) Channel Nicks;End;End;Return();ZSuspend:;IF Arguements.0='ARGUEMENTS.0'|Arguements.0='' THEN;DO;Arguements.0=rtgetstring(,"Enter the nick you wish to suspend on Z",Tags,,Screen);IF rtresult=0 THEN Call Depart();End;IF ~DATATYPE(Time,'W')|Time<1|Time>31536000 THEN;DO;Time=rtgetlong(,"Enter the time wish to suspend "Arguements.0" from using Z",Tags,"_Seconds|_Mins|_Days|_Cancel","rtgl_min=0 rtgl_max=31536000" Screen);End;ELSE;DO;rtezrequest("Enter the base for "Time" to suspend "Arguements.0" from using Z","_Seconds|_Mins|_Days|_Cancel",Tags,Screen);End;Call ZSuspensionDisplay();Call TimeBan();IF Time=0 THEN Time='';"GetUsers";Users=Result;IF Find(Users,'@'MyNick)~=0|Find(Users,'%'MyNick)~=0 THEN;DO;Found=Find(Translate(Upper(Users),"","+@%"),Compress(Upper(Arguements.0)));IF Found~=-1&Found~=0 THEN Axtion=Left(Word(Users,Found),1);SELECT;WHEN Axtion='+' THEN "RAW MODE "Channel" -v "Arguements.0;WHEN Axtion='@' THEN "RAW MODE "Channel" -o "Arguements.0;WHEN Axtion='%' THEN "RAW MODE "Channel" -vo "Arguements.0 Arguements.0;OTHERWISE NOP;End;End;Call cEcho("Suspend" Channel Strip(Arguements.0) Time Left(Action,1));"RAW PRIVMSG Z@Channels.Oz.Org :Suspend" Channel Strip(Arguements.0) Time Left(Action,1);Return();ZSuspensionDisplay:;SELECT;WHEN rtresult=1 THEN Action=' for 'Bold||Time' seconds'Bold;WHEN rtresult=2 THEN Action=' for 'Bold||Time' minutes'Bold;WHEN rtresult=3 THEN Action=' for 'Bold||Time' days'Bold;OTHERWISE Call Depart();End;Call cEcho('Suspending the user 'Bold||Arguements.0||Bold||' from using Z'||Action||'.');Return();ZUnSuspend:;IF Arguements.0='ARGUEMENTS.0'|Arguements.0='' THEN;DO;Arguements.0=rtgetstring(,"Enter the nick you wish to unsuspend on Z",Tags,,Screen);IF rtresult=0 THEN Call Depart();End;"RAW PRIVMSG Z@Channels.Oz.Org :UnSuspend" Channel Strip(Arguements.0);Return();TimeBan:;SELECT;WHEN rtresult=1 THEN Action=' for 'Bold||Time' seconds'Bold;WHEN rtresult=2 THEN;DO;Action=' for 'Bold||Time' minutes'Bold;Time=Time*60;End;WHEN rtresult=3 THEN;DO;Action=' for 'Bold||Time' hours'Bold;Time=Time*60*60;End;WHEN rtresult=4 THEN;DO;Action=' for 'Bold||Time' days'Bold;Time=Time*60*60*24;End;WHEN rtresult=5 THEN;DO;Action=' for 'Bold'forever 'Bold;Time=0;End;OTHERWISE Call Depart();End;Return();ZTimeBan:;SELECT;WHEN rtresult=1 THEN Action=' for 'Bold||Time' hours'Bold;WHEN rtresult=2 THEN;DO;Action=' for 'Bold||Time' days'Bold;Time=Time*24;End;OTHERWISE Call Depart();End;Return();FindUser:;IF Upper(MyNick)=Upper(Arguements.0) THEN;DO;Call cEcho("Don't bother trying to do a ban on yourself");Call Depart();End;"GetUsers";Users=Result;Found=Find(Translate(Upper(Users),"","+@%"),Compress(Upper(Arguements.0)));IF BanType~='Z' THEN;DO;IF Find(Users,'@'MyNick)=0&Find(Users,'%'MyNick)=0 THEN;DO;Call cEcho("You cannot do a ban when you are not opped");Call Depart();End;End;Return();Reason:;SELECT;WHEN NoReason THEN Arguements.1='';WHEN Arguements.1~='ARGUEMENTS.1'&Arguements.1~='' THEN;DO;i=2;DO FOREVER;IF Arguements.i='ARGUEMENTS.'||i THEN Leave;ELSE IF i~=0 THEN Arguements.1=Arguements.1||' '||Arguements.i;i=i+1;End;End;OTHERWISE;Arguements.1=rtgetstring(,"Enter the reason why ya wish to "BanType"ban the person"||NL||"A reason is not always necessary",Tags,"_Ok|_Cancel|_No Reason",Screen);SELECT;WHEN rtresult=0 THEN Arguements.1='';WHEN rtresult=2 THEN Call Depart();OTHERWISE NOP;End;End;Return();Complex:;Call rtezrequest("Please select a type of Hotmask "BanType"Ban or"||NL||"Simple for the Simple "BanHost"Ban menu","*!*U_sername@*.Host|*@*_Host|_Nick!*@*|*!*_Username@*|Si_mple|_Cancel",Tags,Screen);IF Verbose THEN;DO;IF Compress(Arguements.1)=''|Arguements.1='ARGUEMENTS.1' THEN Reason='';ELSE Reason=' with the reason 'Bold||Arguements.1;Call cEcho("Doing a ban on "Bold||Arguements.0||Bold" on "Bold||Channel||Bold||Reason);End;SELECT;WHEN rtresult=5 THEN;DO;Simple=1;Call Simple();End;WHEN rtresult=0 THEN NOP;OTHERWISE Call Ban();End;Return();Simple:;Call rtezrequest("Please select a type of Simple "BanType"Ban or"||NL||"Hotmask for the Hotmask "BanType"Ban menu","*!*U_sername@Host|*!*@_Host|_Nick!*@*|*!_Username@*|Hot_mask|_Cancel",Tags,Screen);IF Verbose THEN;DO;IF Compress(Arguements.1)=''|Arguements.1='ARGUEMENTS.1' THEN Reason='';ELSE Reason=' with the reason 'Bold||Arguements.1;Call cEcho("Doing a ban on "Bold||Arguements.0||Bold" on "Bold||Channel||Bold||Reason);End;SELECT;WHEN rtresult=5 THEN;DO;Simple=0;Call Complex();End;WHEN rtresult=0 THEN NOP;OTHERWISE Call Ban();End;Return();Ban:;IF Simple=0 THEN;DO;IF DATATYPE(Compress(IP,'.'),'N') THEN IP=SubStr(IP,1,LastPos('.',IP))||'*';ELSE IP='*'||SubStr(IP,Pos('.',IP));End;SELECT;WHEN rtresult=1 THEN BanHost='*!'Username'@'IP;WHEN rtresult=2 THEN BanHost='*!*@'IP;WHEN rtresult=3 THEN BanHost=Nick'!*@*';WHEN rtresult=4 THEN BanHost='*!'Username'@*';OTHERWISE cEcho('An error has occured!  Please email the command used to sykoe@sub.net.au');End;IF Verbose THEN Call cEcho(BanType'Banning 'Bold||Nick||Bold||Action'.');IF ZBan THEN;DO;IF Level<76 THEN "RAW MODE "Channel" -o "Nick;ELSE "RAW PRIVMSG Z@Channels.Oz.Org :Ban" Channel Strip(BanHost) Time Level Arguements.1;End;ELSE;DO;'RAW MODE 'Channel' -o+b 'Nick BanHost;'RAW KICK 'Channel Nick ':'Arguements.1;End;IF Time~=0&DATATYPE(Time,'W')&BanType~='Z' THEN Call BanTime();Return();BanTime:;Delay(f*Time);IF Verbose THEN Call cEcho('UnBanning 'Bold||Nick||Bold' at 'Bold||BanHost);'RAW MODE 'Channel' -b 'BanHost;Return();Run:;i=0;IF Exists(Arguements.i)&Arguements.i~='ARGUEMENTS.'||i&Arguements.i~="" THEN;DO;Arguements=Arguements.i;DO UNTIL Arguements.i='ARGUEMENTS.'||i;IF i>1 THEN Arguements=Arguements||' '||Arguements.i;i=i+1;End;End;ELSE;DO;IF Verbose THEN;DO;IF Arguements.i='ARGUEMENTS.'i|Arguements.i="" THEN Call cEcho('No program on the command line was entered.  Now starting the GUI.');ELSE Call cEcho("The program '"Arguements.0"' does not exist!  Now starting the GUI.");End;Arguements=rtgetstring(,"Enter Filename, Path, and Arguments of the program to run"||NL||"EG: Miami:MiamiTelnet localhost 23",Tags,"_Ok|File _Requestor|_Cancel",Screen);SELECT;WHEN rtresult=0 THEN Call Depart();WHEN rtresult=1 THEN;DO;IF Exists(Word(Arguements,1)) THEN ADDRESS COMMAND Arguements;ELSE Call cEcho("File '"Word(Arguements,1)"' does not exist!");Call Depart();End;OTHERWISE;File=rtfilerequest(,,'Select the program...',Screen);IF rtresult=0 THEN Call Depart();ELSE;DO;IF ~Exists(File) THEN;DO;Call cEcho("The program '"File"' does not exist!");Call Depart();End;Arguements=rtgetstring(,"Enter the Arguments for the program you want to run"||NL||"localhost 23",Tags,"_Ok|_Cancel|_No Arguements",Screen);SELECT;WHEN rtresult=2 THEN Call Depart();WHEN rtresult=0 THEN Arguements='';OTHERWISE NOP;End;Arguements=File||' '||Arguements;End;End;End;IF Verbose THEN Call cEcho('Now running: 'Arguements);ADDRESS COMMAND 'Run >NIL:' Arguements;Return();NewNick:;IF Arguements.0='ARGUEMENTS.0'|Arguements.0='' THEN;DO;Arguements.0=rtgetstring(,"Enter your new nickname to use",Tags,"_Ok|_Cancel",Screen);IF rtresult=0 THEN Call Depart();End;IF Verbose THEN Call cEcho('Changing nick to 'Arguements.0);'Say /Nick 'Arguements.0;Return();Type:;IF Arguements.0=""|Arguements.0="ARGUEMENTS.0" THEN;DO;Arguements.0=rtfilerequest('Text',,'File to type to AmIRC..','_Type',Screen);IF rtresult=0 THEN Call Depart();IF Arguements.1=""|Arguements.1="ARGUEMENTS.1" THEN;DO;Arguements.1=rtgetstring(,"Enter the persons Nick to show the text privately to"||NL||"Enter a channel name to send it to send it by a Notice"||NL||"Leave Empty or hit Public to send it publically in the current channel window",Tags,"_Type|_Public",Screen);IF rtresult=0 THEN Nick="";End;End;IF ~Exists(Arguements.0) THEN;DO;Check=Pos(':',Arguements.0);IF Check>0 THEN;DO;Call cEcho('Specified file "'BOLD||Arguements.0||BOLD'" does not exist.');Call Depart();End;Arguements.0='Text/'Arguements.0;IF ~Exists(Arguements.0) THEN;DO;Call cEcho('Specified file "'BOLD||Arguements.0||BOLD'" does not exist.');Call Depart();End;End;IF Arguements.1="" THEN Call cEcho('Typing file "'BOLD||Arguements.1||BOLD'" publically.');ELSE;DO;Arguements.1=Compress(Arguements.1);Call cEcho('Typing file "'BOLD||Arguements.0||BOLD'" to 'BOLD||Arguements.1||BOLD'.');End;IF ~OPEN('F',Arguements.0,'R') THEN;DO;Call cEcho('The specified file "'BOLD||Arguements.0||BOLD'" could not be opened.');Call Depart();End;ELSE;DO;Line=ReadLn('F');DO WHILE ~EOF('F');IF Arguements.1="" THEN;DO;'Say ""'Line;Call Delay(f);End;ELSE;DO;"RAW NOTICE "Arguements.1" :"Line"";Call Delay(f);End;Line=ReadLn('F');End;Close('F');End;Return();cEcho:;'ECHO P='d2c(27)'b«AmScript» 'arg(1);Return();Syntax:;"ECHO P="d2c(27)"b«Syntax»  Command on line" SIGL", Returned" RC ":" errortext(rc) sourceline(SIGL);Call Depart()